package com.cm.pojo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component("car1")
@Scope("singleton")
public class Car {
    @Value("benchi")
    private String carName;
    // @Autowired默认按照类型自动装配，如果IOC容器中同类的Bean有多个，那 么默认按照变量名和Bean的名称匹配，建议使用@Qualifier注解指定要装配的bean名称
    //自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据，因此无需提供setter方法。
    //@Qualifier注解无法单独使用，必须配合@Autowired注解使用
    @Autowired
    @Qualifier("chair")
    private Chair carChair;
    //@Value:注入简单类型(无需提供set方法)
    @Value("Porsche")
    private String carBrand;
    public String getCarName() {
        return carName;
    }

    public String getCarBrand() {
        return carBrand;
    }

    @PostConstruct
    public void init() {
        System.out.println("Car:init");
    }

    @PreDestroy
    public void destroy(){
        System.out.println("destroy");
    }


}
